package xianchenglock1;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.LinkedTransferQueue;
import java.util.concurrent.TransferQueue;
import java.util.concurrent.locks.LockSupport;

/**
 * @功能
 * @创建时间 2019/12/18
 * 这里使用wait和notify识别，wait会释放锁，notify不会释放锁
 * 需要注意的是，运用这种方法，必须保证t2先执行，也就是首先让t2监听才可以
 *
 * 可以读到输出结果并不是size=5时t2退出，而是t3结束时t2才收到通知而退出。。。？
 */
public class MyContainer7 {

    static char[] b = "123456".toCharArray();
    static char[] d = "ABCDEF".toCharArray();
    static Thread t2;
    static Thread t1;
    public static void main(String[] args) {
        TransferQueue<Character> queue = new LinkedTransferQueue<>();
      t1=  new Thread(()->{
          try {
               for(char i:d){

                       System.out.println(queue.take());
                       queue.transfer(i);
               }
          } catch (InterruptedException e) {
              e.printStackTrace();
          }
       },"t1");
        t2 = new Thread(()->{
            try {
                for(char i:b){
                    queue.transfer(i);
                        System.out.println(queue.take());


            }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        },"t2");
       t1.start();
       t2.start();
    }
    }



